Skip to content

doc: documenter la bascule complète de l'API Console vers NestJS - #131

Open
shikanime wants to merge 1 commit into
mainfrom
docs/sync-2026-10-27
Open

shikanime wants to merge 1 commit into
mainfrom
docs/sync-2026-10-27

Conversation

@shikanime

Copy link
Copy Markdown
Member

Quoi

Mise à jour de la page IAM (docs/platform/iam.md) pour refléter l'état actuel de la Console :

  • l'authentification navigateur est décrite comme un jeton Bearer Keycloak résolu côté backend ; l'ancienne phrase mentionnait fastify-keycloak-adapter et un stockage en session, ce qui ne décrit plus le flux servi par server-nestjs ;
  • la fin des endpoints V1 /api/v1/environments et /api/v1/repositories (équivalents V2 sous /api/v2/projects/:projectId/) ;
  • le retrait du Swagger historique /swagger-ui (404), remplacé par /swagger-ui-server-nestjs ;
  • l'acceptation d'une date d'expiration vide à la création d'un jeton d'API (équivaut à l'absence d'expiration).

Pourquoi

La Console sert désormais toute son API via le backend NestJS : le trafic applicatif legacy est fermé (console#2927) et les routes admin tokens et system settings ont été basculées vers server-nestjs (commits console 5618a220, ab27124a, 85eecbb4). Par ailleurs, le schéma de création de jeton accepte de nouveau une date d'expiration vide (commit eea6fd6a). La page décrivait encore l'ancien flux de cohabitation des deux backends.

Références

L'API est servie intégralement par server-nestjs : les endpoints V1
/api/v1/environments et /api/v1/repositories ne sont pas repris (équivalents
V2 sous /api/v2/projects/:projectId/), le Swagger historique /swagger-ui
renvoie 404 au profit de /swagger-ui-server-nestjs, l'authentification
navigateur passe par un jeton Bearer Keycloak résolu côté backend, et une
date d'expiration vide à la création d'un jeton d'API équivaut à l'absence
d'expiration.

Co-authored-by: Automata <automata@shikanime.studio>

@StephaneTrebel StephaneTrebel left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La mise à jour indique utilement les anciens accès API retirés et le Swagger à utiliser ; mes remarques non bloquantes visent surtout à séparer les sujets et à rendre le texte lisible sans connaissance du backend. Liens locaux vérifiés et CI « Test app build » verte ; pas de build local ni de recette API exécutés, et le complément d’exploitation reste suivi séparément dans #135 (sans ledger propre à cette MR).

Comment thread docs/platform/iam.md
L’IAM repose sur Keycloak pour l’identité (OIDC), une authentification backend via session ou jeton API, et une autorisation calculée côté serveur avec des bitmasks BigInt.

L’authentification navigateur passe par `fastify-keycloak-adapter`, qui extrait l’identité (`sub`, `email`, `given_name`, `family_name`, `groups`) et la stocke en session. Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.
L’authentification navigateur s’appuie sur Keycloak (OIDC) : le client attache un jeton `Authorization: Bearer` émis par Keycloak et le backend résout l’identité du jeton (`sub`, `email`, `given_name`, `family_name`, groupes OIDC). Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚪ suggestion (lisibilité): Expliquer la connexion avant les détails du protocole

« Le client attache un jeton » et « le backend résout l’identité » supposent de connaître le fonctionnement d’une application web. Proposition :

Lorsqu’un utilisateur se connecte, Keycloak lui fournit un jeton d’accès. L’application web transmet ce jeton à l’API dans l’en-tête Authorization: Bearer <jeton>. Le serveur vérifie le jeton et en extrait l’identité de l’utilisateur. Pour les scripts et les outils automatisés, un jeton d’API peut être transmis dans l’en-tête x-dso-token.

Les noms techniques des champs (sub, given_name…) peuvent rester dans une seconde phrase destinée aux intégrateurs, plutôt que d’interrompre l’explication de base.

Comment thread docs/platform/iam.md
L’authentification navigateur passe par `fastify-keycloak-adapter`, qui extrait l’identité (`sub`, `email`, `given_name`, `family_name`, `groups`) et la stocke en session. Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.
L’authentification navigateur s’appuie sur Keycloak (OIDC) : le client attache un jeton `Authorization: Bearer` émis par Keycloak et le backend résout l’identité du jeton (`sub`, `email`, `given_name`, `family_name`, groupes OIDC). Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.

L’API de la Console est désormais servie intégralement par le backend NestJS : les anciens endpoints V1 `/api/v1/environments` et `/api/v1/repositories` ne sont pas repris, utilisez leurs équivalents V2 sous `/api/v2/projects/:projectId/`. Le Swagger historique `/swagger-ui` n’est plus servi (404) ; la documentation d’API maintenue est disponible à `/swagger-ui-server-nestjs`. À la création d’un jeton d’API, une date d’expiration laissée vide est acceptée et équivaut à l’absence d’expiration.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚪ suggestion (structure): Séparer les trois informations et donner les chemins de remplacement complets

Ce paragraphe mélange migration des routes, accès à la documentation et expiration des jetons. Un lecteur cherchant une seule de ces informations doit tout déchiffrer ; « sous /api/v2/projects/:projectId/ » ne donne pas encore les routes à appeler.

Je proposerais un petit bloc « Si vous utilisez l’API », avec :

  • un tableau anciennes routes → routes V2 complètes (…/:projectId/environments et …/:projectId/repositories), en précisant que :projectId est à remplacer par l’identifiant du projet ;
  • « Consultez la documentation interactive de l’API à l’adresse /swagger-ui-server-nestjs. L’ancienne adresse /swagger-ui renvoie désormais une erreur 404. » ;
  • une phrase séparée sur les jetons : « Si vous laissez la date d’expiration vide, le jeton reste valable sans limite de durée. »

Cela évite aussi les termes non expliqués « endpoints » et « Swagger » comme seuls points de repère.

Comment thread docs/platform/iam.md
L’IAM repose sur Keycloak pour l’identité (OIDC), une authentification backend via session ou jeton API, et une autorisation calculée côté serveur avec des bitmasks BigInt.

L’authentification navigateur passe par `fastify-keycloak-adapter`, qui extrait l’identité (`sub`, `email`, `given_name`, `family_name`, `groups`) et la stocke en session. Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.
L’authentification navigateur s’appuie sur Keycloak (OIDC) : le client attache un jeton `Authorization: Bearer` émis par Keycloak et le backend résout l’identité du jeton (`sub`, `email`, `given_name`, `family_name`, groupes OIDC). Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 nit (cohérence): Aligner aussi la phrase de synthèse sur l’authentification décrite ici

Le nouveau texte remplace la session par un jeton Bearer :

-L’authentification navigateur passe par `fastify-keycloak-adapter`, qui extrait l’identité (`sub`, `email`, `given_name`, `family_name`, `groups`) et la stocke en session. Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.
+L’authentification navigateur s’appuie sur Keycloak (OIDC) : le client attache un jeton `Authorization: Bearer` émis par Keycloak et le backend résout l’identité du jeton (`sub`, `email`, `given_name`, `family_name`, groupes OIDC). Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.

Mais la ligne juste au-dessus annonce toujours une « authentification backend via session ou jeton API ». Harmoniser cette synthèse avec le nouveau paragraphe éviterait de faire croire à deux mécanismes navigateur concurrents.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants